from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from app.core.settings import settings
from app.db.base import Base

# 创建 MySQL 引擎（配置连接池参数，优化性能）
engine = create_engine(
    settings.DB_URL,
    pool_size=10,  # 连接池大小
    max_overflow=20,  # 超过连接池大小时的临时连接数
    pool_recycle=3600,  # 连接超时时间（秒），避免 MySQL 断开空闲连接
    echo=False  # 生产环境关闭 SQL 日志输出
)

# 会话工厂（每次请求创建独立会话）
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# 创建数据库表（启动时执行，需确保 MySQL 中已存在 DB_NAME 对应的数据库）
def create_all_tables():
    Base.metadata.create_all(bind=engine)